WASD x86-64 on OpenVMS V9.0-D EAK after less than 8 hours porting effort...



Text from original email...

When we left our intrepid adventures Thursday, the journey had progressed a
mere few steps before grinding to a halt after initialisation.

> %HTTPD-I-BEGIN, 17-SEP-2020 14:07:51, WASD:7080 accepting requests

The issue was found with perhaps three hours further investment the following
day.

Early in the start-up a gethostname() (standard C library networking call)
was returning with user-mode ASTs disabled.  Now, you don't need to know too
much about WASD to understand that disabled AST delivery is an absolute
neurotoxin.  An OS/network-stack/runtime bug.  Reported to VSI (though likely
not for the first time).  Workaround; $SETAST(1) immediately following the
call.

Woosh!  Responsiveness on port 80.

That addressed, the next step for a modern Web, was to secure network
communications.  The OpenVMS V9.0-D VM came with VSI SSL111 installed.  So
far the executable image had been cross-compiled and cross-linked on the
Itanium system.  To build against the SSL111 shareable images the object code
needed to be brought across to the x86 and linked there.  It then reported...

%HTTPD-I-SOFTWAREID, HTTPd-WASD/11.5.1 OpenVMS/X86 SSL
WASD VMS Web Services, Copyright (C) 1996-2020 Mark G.Daniel.
8< snip 8<
%HTTPD-I-SYSTEM, VBOX VBOXFACP VMS V9.0-D
8< snip 8<
K:1 E:2 S:4 U:8 NET:322  !<- debug code before gethostname() user-mode ASTs active
K:1 E:2 S:4 U:0 NET:325  !<- after; user mode ASTs no longer active
8< snip 8<
%HTTPD-I-SSL, OpenSSL 1.1.1g  21 Apr 2020 (0x1010107F)
-SSL-I-PROTOCOL, TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
-SSL-I-OPTIONS, 0x80410854
-SSL-I-SNI, Server Name Indication enabled
-SSL-W-DH, no ephemeral DH param
%HTTPD-I-HTTP2, enabled
8< snip 8<
%HTTPD-I-SERVICE, http://x86v1.vsm.com.au:7080
%HTTPD-I-SERVICE, https://x86v1.vsm.com.au:7443
%HTTPD-I-SSL, x86v1.vsm.com.au:7443
Generate x86v1.vsm.com.au 2048 bit private key:
................++++++++++++
.......++++++++++++++
%HTTPD-I-DEMO, demonstration mode
8< snip 8<
%HTTPD-I-BEGIN, 18-SEP-2020 15:48:59, WASD:7080 accepting requests

A page containing images of the running server is available at

  https://wasd.vsm.com.au/other/WASD%20x86-64%2019-SEP-2020.html

Total time invested (excluding troubleshooting the gethostname() issue);
something less than 8 hours.

Total code changes;

$ search *.c "#ifdef __x86

******************************
WASD_ROOT:[src.HTTPDX]httpd.c;6

#ifdef __x86_64
#ifdef __x86_64
#ifdef __x86_64

******************************
WASD_ROOT:[src.HTTPDX]net.c;17

#ifdef __x86_64

******************************
WASD_ROOT:[src.HTTPDX]sysplus.c;3

#ifdef __x86_64

******************************
WASD_ROOT:[src.HTTPDX]tcpip.c;7

#ifdef __x86_64
#ifdef __x86_64

******************************
WASD_ROOT:[src.HTTPDX]version.c;3

#ifdef __x86_64

A couple of these disable image analysis for reporting purposes; it seems
x86-64 ELF details are different to IA64.  The SYSPLUS.C a similar
disablement for a system call reason.  A couple to report X86 instead of AXP,
IA64 or VAX :-)

Seems a bit too easy.  Of course VMS is VMS is VMS and now VMS.  Mostly.

This is a real-life, almost real-time, porting report on a EAK.  Most
reassuring.  Porting application code should be (relatively) straightforward.
Though I'm pleased WASD doesn't do any kernel fiddles :-|

Trust this is of some interest and use, Mark.